1. Field of the Invention
This invention relates to servers and more specifically to creation of server trees for better efficiency and load distribution.
2. Discussion of the Related Art
There are numerous protocols that carry various forms of real-time multi-media session data such as voice, video, or text messages. A session is considered an exchange of data between an association of participants. Session Initiation Protocol (SIP) works in concert with these protocols by enabling Internet end points to discover one another and to agree on a characterization of a session they would like to share. SIP uses an infrastructure of network hosts (e.g., proxy servers) to which Internet end points (called user agents) can send registrations, invitations to sessions, and other requests.
SIP is an application-layer control protocol that can establish, modify, and terminate multimedia sessions (i.e., conferences) such as Internet telephony calls. SIP works independently of underlying transport protocols and without dependency on the type of session that is being established. SIP can also invite participants to already existing sessions. A SIP entity issuing an invitation for an already existing session does not necessarily have to be a member of the session to which it is inviting. Media can be added to (and removed from) an existing session. SIP transparently supports name mapping and redirection services, which supports personal mobility (i.e., users can maintain a single externally visible identifier (i.e., SIP Uniform Resource Identifier (URI)) regardless of their network location. This SIP URI is similar in form to an email address, typically containing a user name and a host name. The host name may be a domain name of the user's service provider, enterprise, retail provider, etc.
SIP is based on a Hypertext Transfer Protocol (HTTP) like request/response transaction model. Each transaction consists of a request that evokes a particular method or function on the server and at least one response.
SIP is becoming more and more popular. A lot of popular and large scale services will be provided with SIP, thus causing a lot of extra overhead to SIP application servers and networks. There are many push-like SIP non-call services that may generate tremendous amounts of overhead into SIP application servers and into the SIP network. These services are initiated by SIP SUBSCRIBE or SIP INVITE messages from a client.
The amount of SIP traffic becomes huge if a lot of users (especially from the same domain or ISP) subscribe or join the same SIP service. For example, an SIP event notification service, such as live text sport commentary, may have 10,000 users subscribed to the same service (in the same server). This means that the server has to send 10,000 SIP event notifications (or messages) all the time, and get as many responses. Further, the server may also have to retransmit some messages due to transmission problems. These 10,000 event notifications may possibly be sent over the same backbone links.
In another example, an SIP group service (e.g., chat groups) may be established, which may have a lot of users from the same domains. The users may be participating in the same domain or different groups in the same SIP server. In both these examples, where a lot of users join the same service or the data rate is higher than usual, the SIP server and its network interface becomes the bottleneck. Moreover, a problem also exists if there are a lot of less popular services, e.g., thousands of less popular events or small chat groups in the same SIP server.
A similar problem exists today with web services. For example, there may exist several web servers that provide live sport results. However, users have to press their web browser's “reload” button every few seconds if they want to follow the sport event live. This means that these web pages have to respond often with internal server error as network links are often congested causing packet drops (which makes TCP slower for the client).
One current solution to these problems is that one server has backup high-end servers nearby, each accessing the same database. However, this is an expensive solution (i.e., service provider must itself have these servers) and inefficient since it does not reduce the amount of network traffic.
Therefore, with one SIP server serving a lot of clients, several problems exist: a lot of extra overhead is created in the network; the SIP server load is large; the fairness to each client is not good since some clients receive a notification earlier than others since one server cannot send notifications to all clients simultaneously; and the process is more time consuming since the SIP server must send notifications/service to a large number of clients. Moreover, having clients perform manual or automatic refresh is inefficient since there may not be any new updated information for a long while or there may be a lot of new updating in a short amount of time that manual or automatic refresh misses.